package com.gkzf.ai.module.crm.dal.dataobject.product;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gkzf.ai.framework.mybatis.core.dataobject.BaseDO;
import com.gkzf.ai.module.crm.enums.DictTypeConstants;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * CRM 产品 DO
 *
 * @author ZanGe丶
 */
@TableName("crm_product")
@KeySequence("crm_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CrmProductDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 产品名称
     */
    private String name;
    /**
     * 产品编码
     */
    private String no;
    /**
     * 贷款类型
     */
    private Integer loanType;
    /**
     * 贷款期限
     * 字典 {@link DictTypeConstants#CRM_PRODUCT_UNIT}
     */
    private String loansDeadline;
    /**
     * 最大限额
     */
    private BigDecimal maxQuota;
    /**
     * 办理周期
     */
    private Integer processingCycle;
    /**
     * 下款方式 0：自主  1：第三方
     */
    private String payeeWay;
    /**
     * 利率
     */
    private String interestRate;
    /**
     * 状态 0：有效 1：无效
     */
    private Integer status;
    /**
     * 产品准备材料
     */
    private String preparedMaterials;
    /**
     * 产品有效期开始时间
     */
    private LocalDate validityPeriodStart;
    /**
     * 产品有效期结束时间
     */
    private LocalDate validityPeriodEnd;
     /**
     * 产品描述 备注
     */
    private String description;
    /**
     * 负责人的用户编号
     * 关联 AdminUserDO 的 id 字段
     */
    private Long ownerUserId;
    /**
     * 合作机构 字典配置
     */
    private Integer cooperationInstitution;

    /**
     * 额度公式
     */
    private String quotaFormula;
    /**
     * 产品介绍
     */
    private String descriptions;

    /**
     * 产品标签
     */
    private String label;
    /**
     *  是否推送app端
     */
    private Integer isPushRemotely;

    /**
     *  是否推送推荐 默认0不推荐  1推荐
     */
    private Integer isRecommendation;

    /**
     *  申请流程
     */
    private String applicationProcess;
}
